package com.demo.core.enums;

/**
 * @author Tan-Bowen
 * @description TODO  redis缓存枚举类,所有得redis缓存在这里定义
 * @date 2021/7/27 16:11
 */
public enum RedisCacheEnum {
    /** 配置刷新 */
    CONFIG_EVENT("config:event"),
    /** 单表缓存 */
    TABLE("table"),
    /** 用户token缓存 :userId */
    USER_TOKEN("user:token"),
    /** 用户列表 測試  */
    USER_LIST("user:list"),
    /** 用户所拥有得角色 key：userId */
    USER_ROLE("user:role"),
    /** 角色所拥有的菜单以及接口权限 key：roleId */
    ROLE_MENU("role:menu"),
    /** 会员卡优惠配置 key memberId */
    MEMBER_CONFIG_MEMBER("member:config:member"),
    /** 所有车辆品牌缓存 */
    CAR_BRAND_ALL("car:brand:all"),
    /** 所有车辆型号缓存 */
    CAR_MODEL_ALL("car:model:all"),
    /** 所有业务缓存 */
    BUSINESS_RANGE_ALL("business:range:all"),
    /** 所有会员卡信息 配置信息缓存 */
    MEMBER_RANGE_CONFIG("member:range:config"),
    /** 所有车主信息 */
    MEMBER_ACCOUNT_ALL("member:account:all"),

    /** 所有提醒配置信息 */
    REMIND_SETTING_ALL("remind:setting:all"),
    /** 会员卡账户优惠信息 key ：accountId */
    MEMBER_ACCOUNT_BUSINESS("member:account:business"),
    /** 缓存所有车辆信息 */
    CAR_ALL("car:all"),
//    /** 接口缓存 */
//    INTERFACE("interface:item"),
    DICT_LIST("dict:list"),
    ;
    private final String key;

    RedisCacheEnum(String key){
        this.key = key;
    }


    /**
     * @author Tan-Bowen
     * @description TODO 创建redis key
     * @date 2021/7/27 16:11
     * @param [params]
     * @paramType [java.lang.Object...]
     * @return java.lang.String
     */
    public String createKey(Object ...params){
        StringBuilder sb = new StringBuilder();
        sb.append(getKey());
        for(Object param:params){
            if(param!=null){
                sb.append(":");
                sb.append(param);
            }
        }
        return sb.toString();
    }
    public String getKey() {
        return key;
    }
}
